{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8f762e3c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch.autograd.grad_mode.set_grad_enabled at 0x7f96081d8040>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "import json\n",
    "from collections import defaultdict\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import einops\n",
    "\n",
    "import torch\n",
    "import torch.nn.functional as F\n",
    "from fancy_einsum import einsum\n",
    "from tqdm import tqdm\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.gridspec import GridSpec\n",
    "from transformer_lens import HookedTransformer\n",
    "from toxicity.figures.fig_utils import convert, load_hooked, get_svd\n",
    "from constants import MODEL_DIR, DATA_DIR\n",
    "\n",
    "torch.set_grad_enabled(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a6e92abc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loaded pretrained model gpt2-medium into HookedTransformer\n",
      "Loaded pretrained model gpt2-medium into HookedTransformer\n"
     ]
    }
   ],
   "source": [
    "\n",
    "model = load_hooked(\"gpt2-medium\", os.path.join(MODEL_DIR, \"dpo.pt\"))\n",
    "gpt2 = HookedTransformer.from_pretrained(\"gpt2-medium\")\n",
    "gpt2.tokenizer.padding_side = \"left\"\n",
    "gpt2.tokenizer.pad_token_id = gpt2.tokenizer.eos_token_id\n",
    "\n",
    "toxic_vector = torch.load(os.path.join(MODEL_DIR, \"probe.pt\"))\n",
    "\n",
    "cos = F.cosine_similarity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ab88df24",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "with open(\n",
    "    os.path.join(DATA_DIR, \"intervene_data/challenge_prompts.jsonl\"), \"r\"\n",
    ") as file_p:\n",
    "    data = file_p.readlines()\n",
    "\n",
    "prompts = [json.loads(x.strip())[\"prompt\"] for x in data]\n",
    "tokenized_prompts = model.to_tokens(prompts, prepend_bos=True).cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8bca9e25",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "svd_gpt2, scores_gpt2 = get_svd(gpt2, toxic_vector, 128)\n",
    "\n",
    "mlps_by_layer = {}\n",
    "for _score_obj in scores_gpt2:\n",
    "    layer = _score_obj[2]\n",
    "    if layer not in mlps_by_layer:\n",
    "        mlps_by_layer[layer] = []\n",
    "    mlps_by_layer[layer].append(_score_obj[1])\n",
    "\n",
    "vectors_of_interest = [\n",
    "    (_score_obj[2], _score_obj[1], _score_obj[0])\n",
    "    for _score_obj in scores_gpt2[:64]\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3a2d0c3e",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████████████████| 300/300 [00:33<00:00,  8.84it/s]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "sample_size = tokenized_prompts.shape[0]\n",
    "layer_of_interest = 18\n",
    "\n",
    "sublayers = [0, 2, 4, 6, 8, 9, 11, 13, 15, 17]\n",
    "batch_size = 4\n",
    "\n",
    "all_diffs = []\n",
    "for idx in tqdm(range(0, sample_size, batch_size)):\n",
    "    batch = tokenized_prompts[idx : idx + batch_size, :]\n",
    "    with torch.inference_mode():\n",
    "        _, cache = gpt2.run_with_cache(batch)\n",
    "\n",
    "    gpt2_resids = {}\n",
    "    # [batch, d_model]\n",
    "    gpt2_resids[layer_of_interest] = cache[\n",
    "        f\"blocks.{layer_of_interest}.hook_resid_mid\"\n",
    "    ]\n",
    "\n",
    "    with torch.inference_mode():\n",
    "        _, cache = model.run_with_cache(batch)\n",
    "\n",
    "    # [batch, d_model]\n",
    "    all_diffs.append(\n",
    "        cache[f\"blocks.{layer_of_interest}.hook_resid_mid\"]\n",
    "        - gpt2_resids[layer_of_interest]\n",
    "    )\n",
    "\n",
    "all_diffs = torch.concat(all_diffs, dim=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "96e9658c",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# [4096, 1024]\n",
    "mlp_diffs = {}\n",
    "for _layer in sublayers:\n",
    "    dpo_w_out = model.blocks[_layer].mlp.W_out\n",
    "    gpt2_w_out = gpt2.blocks[_layer].mlp.W_out\n",
    "    mlp_diffs[_layer] = dpo_w_out - gpt2_w_out\n",
    "\n",
    "\n",
    "diff_cosines = {}\n",
    "\n",
    "for mlp_layer in sublayers:\n",
    "\n",
    "    diff_cosines[mlp_layer] = cos(\n",
    "        mlp_diffs[mlp_layer],\n",
    "        all_diffs.view(-1, 1024).mean(dim=0).unsqueeze(0),\n",
    "        dim=1,\n",
    "    ).tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6e2824de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grabbing mlp mids...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████████████████| 300/300 [00:20<00:00, 14.74it/s]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "all_acts_dpo_pt = defaultdict(list)\n",
    "# Decompose layer 19 MLP out\n",
    "print(\"Grabbing mlp mids...\")\n",
    "for idx in tqdm(range(0, sample_size, batch_size)):\n",
    "    batch = tokenized_prompts[idx : idx + batch_size, :]\n",
    "    with torch.inference_mode():\n",
    "        _, cache = model.run_with_cache(batch)\n",
    "\n",
    "    for _layer in sublayers:\n",
    "        mlp_mid = cache[f\"blocks.{_layer}.mlp.hook_post\"]\n",
    "        all_acts_dpo_pt[_layer].append(mlp_mid.cpu())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2297253d",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "d_mlp = model.cfg.d_mlp\n",
    "dpo_acts_mean = {}\n",
    "gpt2_acts_mean = {}\n",
    "for _layer in sublayers:\n",
    "    concat = torch.concat([x.cuda() for x in all_acts_dpo_pt[_layer]], dim=0)\n",
    "    dpo_acts_mean[_layer] = (\n",
    "        concat.view(-1, d_mlp).to(\"cuda:1\").mean(dim=0).cpu()\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6db314af",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building dataframes.\n"
     ]
    }
   ],
   "source": [
    "\n",
    "print(\"Building dataframes.\")\n",
    "\n",
    "raw_cosine_data = []\n",
    "layers_to_plot = list(diff_cosines.keys())\n",
    "for _layer in layers_to_plot:\n",
    "    for _idx in range(d_mlp):\n",
    "        raw_cosine_data.append(\n",
    "            {\n",
    "                \"layer\": _layer,\n",
    "                \"cos_sim\": round(diff_cosines[_layer][_idx], 2),\n",
    "            }\n",
    "        )\n",
    "\n",
    "raw_mean_acts = []\n",
    "for _layer in layers_to_plot:\n",
    "    for _idx in range(d_mlp):\n",
    "        raw_mean_acts.append(\n",
    "            {\"layer\": _layer, \"mean_acts\": dpo_acts_mean[_layer][_idx].item()}\n",
    "        )\n",
    "\n",
    "\n",
    "cos_sim_df = pd.DataFrame(raw_cosine_data)\n",
    "mean_acts_df = pd.DataFrame(raw_mean_acts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c259b8bc",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 675x240 with 20 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "sns.set_theme(context=\"paper\", style=\"ticks\", rc={\"lines.linewidth\": 1})\n",
    "\n",
    "colors = sns.color_palette()\n",
    "\n",
    "num_cols = int(len(sublayers) / 2)\n",
    "\n",
    "fig = plt.figure(figsize=(6.75, 2.4))\n",
    "gs = GridSpec(2, num_cols)\n",
    "\n",
    "yticks = [0, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24]\n",
    "edge_col = 0\n",
    "\n",
    "for idx in range(num_cols * 2):\n",
    "    curr_row = idx // num_cols\n",
    "    curr_col = idx % num_cols\n",
    "\n",
    "    _layer = sublayers[idx]\n",
    "    ax = fig.add_subplot(gs[curr_row, curr_col])\n",
    "\n",
    "    ax.set(yticks=yticks)\n",
    "    ax2 = ax.twiny()\n",
    "    sns.histplot(\n",
    "        data=cos_sim_df[cos_sim_df.layer == _layer],\n",
    "        x=\"cos_sim\",\n",
    "        ax=ax,\n",
    "        stat=\"probability\",\n",
    "        color=colors[0],\n",
    "        alpha=1,\n",
    "        element=\"poly\",\n",
    "    )\n",
    "    sns.histplot(\n",
    "        data=mean_acts_df[mean_acts_df.layer == _layer],\n",
    "        x=\"mean_acts\",\n",
    "        ax=ax2,\n",
    "        stat=\"probability\",\n",
    "        color=colors[1],\n",
    "        alpha=0.65,\n",
    "        element=\"poly\",\n",
    "    )\n",
    "\n",
    "    ax.set_title(f\"Layer {_layer}\", pad=-10)\n",
    "\n",
    "    ax.set(yticks=yticks)\n",
    "    ax.set(xticks=[-1, 0, 1])\n",
    "    ax.yaxis.tick_left()\n",
    "    if curr_col != edge_col:\n",
    "        ax.yaxis.set_visible(True)\n",
    "        ax.yaxis.set_ticklabels([])\n",
    "        ax.yaxis.label.set_visible(False)\n",
    "\n",
    "    else:\n",
    "        ax.yaxis.label.set_visible(True)\n",
    "        ax.yaxis.label.set_text(\"Proportion\")\n",
    "\n",
    "    if curr_row == 0:\n",
    "        ax.xaxis.label.set_visible(False)\n",
    "        ax.xaxis.set_ticklabels([])\n",
    "        ax2.xaxis.set_visible(False)\n",
    "\n",
    "    ax2.set_xlim(left=-0.21, right=0.21)\n",
    "\n",
    "    ax2.xaxis.set_ticks_position(\"bottom\")\n",
    "    ax2.xaxis.set_label_position(\"bottom\")\n",
    "    ax2.spines[\"bottom\"].set_position((\"outward\", 28))\n",
    "    ax2.set_frame_on(True)\n",
    "    ax2.patch.set_visible(False)\n",
    "    for sp in ax2.spines.values():\n",
    "        sp.set_visible(False)\n",
    "    ax2.spines[\"bottom\"].set_visible(True)\n",
    "\n",
    "    ax.spines[\"bottom\"].set_color(colors[0])\n",
    "    ax2.spines[\"bottom\"].set_color(colors[1])\n",
    "\n",
    "    ax.xaxis.label.set_color(colors[0])\n",
    "    ax.tick_params(axis=\"x\", colors=colors[0])\n",
    "\n",
    "    ax2.xaxis.label.set_color(colors[1])\n",
    "    ax2.tick_params(axis=\"x\", colors=colors[1])\n",
    "\n",
    "    ax2.set(xticks=[-0.2, 0, 0.2])\n",
    "    ax.xaxis.label.set_text(\"Cos Sim\")\n",
    "    ax2.xaxis.label.set_text(\"Mean Act.\")\n",
    "    ax.xaxis.labelpad = -1\n",
    "    ax2.xaxis.labelpad = -1\n",
    "\n",
    "fig.savefig(\n",
    "    f\"resid_diff_subplots_layer{layer_of_interest}.pdf\",\n",
    "    bbox_inches=\"tight\",\n",
    "    dpi=1200,\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
